﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

using CMISForSharePoint.cmisTypes;
using CMISForSharePoint.Divers;
using CMISForSharePoint.cmisExceptions;

namespace CMISForSharePoint.CmisServices.RepositoryService
{
   
    // NOTE: If you change the interface name "IGetRepositoryService" here, you must also update the reference to "IGetRepositoryService" in App.config.
    [ServiceContract]
    
    [XmlSerializerFormat]
    public interface IRepositoryService
    {
        [OperationContract]
        cmisRepositoryEntryType[] GetRepositories();

        [OperationContract]
        cmisRepositoryInfoType getRepositoryInfo(string id);
       
        [OperationContract]
        getTypesResponse  getTypes(getTypes param);

        [OperationContract]
        cmisTypeDefinitionType getTypeDefinition(string repositoryId, string typeId);
        
    /////////////////////////////////////////////////////////////////////////////////////////////////////
    //cette partie est normalement presente dans navigation services elle est la juste pour le developpement et le test
        [OperationContract]
        getDescendantsResponse getDescendants(getDescendants param);

        [OperationContract]
        getChildrenResponse getChildren(getChildren param);

        [OperationContract]
        getFolderParentResponse getFolderParent(getFolderParent param);

        [OperationContract]
        getObjectParentsResponse getObjectParents(getObjectParents param);

        [OperationContract]
        getCheckedoutDocsResponse getCheckedoutDocuments(getCheckedoutDocs param);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        [OperationContract]
        createDocumentResponse createDocument(createDocument param);

        [OperationContract]
        createFolderResponse createFolder(createFolder param);

        [OperationContract]
        createRelationshipResponse createRelationship(createRelationship param);

        [OperationContract]
        createPolicyResponse createPolicy(createPolicy param);

        [OperationContract]
        getAllowableActionsResponse getAllowableActions(getAllowableActions param);

        [OperationContract]
        getPropertiesResponse getProperties(getProperties param);

        [OperationContract]
        getContentStreamResponse getContentStream(getContentStream param);

        [OperationContract]
        updatePropertiesResponse updateProperties(updateProperties param);

        [OperationContract]
        moveObjectResponse moveObject(moveObject param);
        
        [OperationContract]
         deleteObjectResponse deleteObject(deleteObject param);
        
        [OperationContract]
        deleteTreeResponse deleteTree(deleteTree param);

        [OperationContract]
        setContentStreamResponse setContentStream(setContentStream param);
        
        [OperationContract]
        deleteContentStreamResponse deleteContentStream(deleteContentStream param);
        ///////////////////////////////////////////////////////////////////////////////////////
        [OperationContract]
        checkOutResponse checkOut(checkOut param);

        [OperationContract]
        cancelCheckOutResponse cancelCheckOut(cancelCheckOut param);

        [OperationContract]
        checkInResponse checkIn(checkIn param);

    }

   

    
}
